/**
 * 邢帅教育
 * <p>
 * 本源代码由数据中心及其作者共同所有，未经版权持有者的事先书面授权，
 * 不得使用、复制、修改、合并、发布、分发和/或销售本源代码的副本。
 *
 * @copyright Copyright (c) 2018. [图片]xsteach.com all rights reserved.
 * @description
 * @author maikec
 * @date 2018/7/9
 */

/**
 * @description
 * @author maikec
 * @date 2018/7/9
 */
package com.maikec.utils.scheduled;
//cron表达式是由空格分隔的6或7个字段组成的字符串。字段可以包含任何允许的值，以及该字段允许的特殊字符的各种组合。字段如下：
//
//字段名称	强制性	允许的值	允许的特殊字符
//秒	是	0-59	， - * /
//分钟	是	0-59	， - * /
//小时	是	0-23	， - * /
//一个月的一天	是	1-31	， - *？/ LW
//月	是	1-12或JAN-DEC	， - * /
//星期几	是	1-7或SUN-SAT	， - *？/ L＃
//年	没有	空，1970-2099	， - * /

//特殊字符
//*（ “所有值”） - 用于选择字段中的所有值。例如，分钟字段中的“ * ”表示 “每分钟”。
//
//？（ “无特定值”） - 当您需要在允许该字符的两个字段之一中指定某些内容时有用，而不是另一个字段。例如，如果我希望我的触发器在该月的某个特定日期（例如，第10天）触发，但不关心恰好在一周的哪一天，我会在当天放置“10” -month字段，以及星期几字段中的“？”。请参阅以下示例以获得说明。
//
//- - 用于指定范围。例如，小时字段中的“10-12”表示 “小时10,11和12”。
//
//， - 用于指定其他值。例如，星期几字段中的“MON，WED，FRI”表示 “星期一，星期三和星期五”。
//
/// - 用于指定增量。例如，秒字段中的“0/15”表示 “秒 0,15,30和45”。秒字段中的“5/15”表示 “秒 5,20,35和50”。你也可以在' '字符后指定'/' - 在这种情况下' '相当于在'/'之前有'0'。日期字段中的“1/3”表示 “从该月的第一天开始每3天触发一次”。
//
//L（ “last”） - 在允许的两个字段的每一个中具有不同的含义。例如，日期字段中的值“L”表示 “月份的最后一天” - 1月31日，非闰年2月28日。如果在星期几字段中单独使用，则仅表示“7”或“SAT”。但是如果在星期几字段中使用另一个值后，则表示 “该月的最后一个xxx日” - 例如“6L”表示 “该月的最后一个星期五”。您还可以指定从该月的最后一天开始的偏移量，例如“L-3”，这意味着该日历月的倒数第三天。 使用“L”选项时，重要的是不要指定列表或值范围，因为您会得到令人困惑/意外的结果。
//
//W（ “工作日”） - 用于指定最接近给定日期的工作日（周一至周五）。例如，如果您指定“15W”作为日期字段的值，则含义为： “最近的工作日到该月的15日”。因此，如果15日是星期六，触发器将在14日星期五开火。如果15日是星期日，触发器将在16日星期一开火。如果15日是星期二，那么它将在星期二15日开火。但是，如果您指定“1W”作为星期几的值，并且第1个是星期六，则触发器将在星期一3点触发，因为它不会“跳过”一个月的边界。只有当日期是一天，而不是范围或天数列表时，才能指定“W”字符。
//
//'L'和'W'字符也可以在日期字段中组合以产生'LW'，这转换为*“最后一个工作日”*。
//＃ - 用于指定当月的“第n个”XXX天。例如，星期几字段中的“6＃3”的值表示 “该月的第三个星期五”（第6天=星期五，“＃3”=该月份的第3个星期五）。其他例子：“2＃1”=本月的第一个星期一，“4＃5”=该月的第五个星期三。请注意，如果您指定“＃5”并且该月中没有给定星期几的5，则该月不会发生任何触发


//**表达**	**含义**
//0 0 12 * *？	每天中午12点（中午）开火
//0 15 10？* *	每天上午10:15开火
//0 15 10 * *？	每天上午10:15开火
//0 15 10 * *？*	每天上午10:15开火
//0 15 10 * *？2005年	2005年每天上午10:15开火
//0 * 14 * *？	每天从下午2点开始，每天下午2:59结束
//0 0/5 14 * *？	每天从下午2点开始每隔5分钟开始一次，每天下午2:55结束
//0 0/5 14,18 * *？	从下午2点开始每隔5分钟开始一次，下午2:55结束，每隔5分钟开始一次，从下午6点开始，每天下午6:55结束
//0 0-5 14 * *？	每天从下午2点开始，每天下午2:05结束
//0 10,44 14？3 WED	3月份的每个星期三下午2:10和下午2:44开火。
//0 15 10？* MON-FRI	每周一，周二，周三，周四和周五上午10:15开火
//0 15 10 15 *？	每个月的第15天上午10:15开火
//0 15 10 L *？	在每个月的最后一天上午10:15开火
//0 15 10 L-2 *？	每个月的倒数第二天上午10:15开火
//0 15 10？* 6L	每个月的最后一个星期五上午10:15开火
//0 15 10？* 6L	每个月的最后一个星期五上午10:15开火
//0 15 10？* 6L 2002-2005	在2002年，2003年，2004年和2005年的每个月的每个星期五上午10:15开火
//0 15 10？* 6＃3	每个月的第三个星期五上午10:15开火
//0 0 12 1/5 *？	从每月的第一天开始，每月中午12点（中午）开火。
//0 11 11 11 11？	每年11月11日上午11:11开火